组件环境分析:
上图所示版本信息是从英伟达官网下载的2020.10.21更新的Jetson nano官方镜像的组件环境,也是yahboom亚博智能Jetbotmini官方固件组件环境,此组件版本环境经过全功能测试通过。如果用户需要按照yahboom官方给出的教程从头开始从官方下载新固件环境搭建Jetbotmini固件环境,为了避免在搭建环境中因为版本兼容性问题而出现的各种为未知异常问题导致浪费用户时间的情况出现,请尽可能使用2020.10.21官方更新的镜像环境。
Jetson nano英伟达官方开发人员套件镜像下载地址:
搜索地址:https://developer.nvidia.com/embedded/downloads#?search=Jetson%20Nano
注意,如果购买了配套的U盘/SD卡和主板则不需要烧录可以直接启动;如果单独购买了主板,eMMC版本如果可以开机(带eMMC镜像)则从烧录引导开始。
eMMC版本(SUB版)烧录方法:
eMMC版本使用U盘启动,对于U盘启动方式,有以下几个点需要注意:
1. Jetson Nano的核心板的系统版本和U盘的系统版本要对应,比如U盘已经烧录了V4.5.1版本,那么Jetson Nano核心板的系统版本也必须是V4.5.1,否则无法USB启动。
2. USB启动的思路是先启动核心板里的系统,再由核心板的系统引导到U盘上启动。
3. 核心板里的系统需要使用SDKManger来烧录系统,U盘里的系统需要使用Win32DiskImager来烧录系统。
注意:如果是使用亚博智能资料中提供的虚拟机,虚拟机用户名:yahboom,密码:yahboom
烧录方法如下,首先是烧录核心板系统:
1. 打开NVIDIA的jetpack下载网址:
https://developer.nvidia.com/zh-cn/embedded/jetpack 用虚拟机Ubuntu18.04系统,点击下载SDK Manager,使用前请先注册/登录NVIDIA账号。
2. 安装SDK Manager。
先进入刚刚下载的.deb文件的路径,例如这里下载到Downloads目录。
cd Downloads/
在终端输入命令sudo dpkg -i sdkmanager_1.5.0-7774_amd64.deb
安装SDK Manager。
此时系统可能会报错找不到依赖文件,输入以下命令解决此问题。
sudo apt --fix-broken install
3. 打开Ubuntu18.04系统的程序,搜索SDK,可以找到SDKManager,打开文件。
登录NVIDIA账号,会在浏览器弹出链接,输入用户名和密码登录进去。
4.虚拟机Ubuntu18.04连接jetson Nano。
此时需要让jetson Nano进入系统REC刷机模式。
将跳线帽连接到FC REC和GND引脚,也就是连接到核心板下方载板的第二和第三个引脚,如下图所示:
连接线路,将HDMI显示屏、鼠标、键盘和microUSB数据线连接到Jetson Nano上,最后再接入电源。由于上一步已经将跳线帽连接FC REC和GND引脚,所以上电开机后会自动进入REC刷机模式。
5.在虚拟机Ubuntu18.04的SDKManager软件选择Target Hardware为Jetson Nano modules,JetPack版本,这里以4.6版本为例。
如果在Target Hardware显示未连接状态,请确认设备是否进入REC刷机模式并连接上虚拟机,然后点击refresh刷新。这里注意一下使用虚拟机需要把设备设置为连接到虚拟机上。
如果没弹出以上提示,可以在虚拟机的右下角手动连接:找到NVIDIA APX后点击连接到虚拟机。颜色亮了表示已连接到虚拟机。
确认无误后点击CONTINUE.
6.默认会勾选Jetson OS和Jetson SDK Components,表示刷入系统和SDK,可以单独选系统OS或者软件SDK,但是单独刷入软件SDK前需要保证已经刷入系统OS。由于Jetson Nano自带的EMMC容量只有16G,所以安装不了SDK,只能选择刷入OS系统。
文件下载路径保持默认就好,勾选协议,点击CONTINUE进入下一步。
输入虚拟机的密码。
此时SDKManager会先下载需要烧录的文件,等待烧录文件下载完成即可开始烧录系统。
7. 等待系统OS烧录完成后,Jetson Nano会自动重启进入系统,此时需要根据系统提示给设置系统的基本功能,必须执行的包括设置用户名与密码等,设置用户名和密码这里一定要牢记,否则会出现登录不进系统的问题。
8.注意:烧录完系统后,请将FC REC和GND之间的跳线帽拔掉。
接着烧录EMMC引导:
1.Jetson Nano连接虚拟机,准备好Jetson nano主板,跳线帽,显示屏,鼠标键盘等。
2.让jetson Nano进入系统REC刷机模式。
将跳线帽连接到FC REC和GND引脚,也就是连接到核心板下方载板的第二和第三个引脚,如下图所示:
连接线路,将HDMI显示屏、鼠标、键盘连接到Jetson Nano上,再接入电源,最后和插入microUSB数据线。由于上一步已经将跳线帽连接FC REC和GND引脚,所以上电开机后会自动进入REC刷机模式。
正常情况下,插入microUSB数据线后弹出以下窗口,这里注意一下使用虚拟机需要把设备设置为连接到虚拟机上。
3.请将资料中的Jetson_Boot_USB.tar.gz文件传入Ubuntu 18.04系统,并打开终端运行解压命令。
tar xzvf Jetson_Boot_USB.tar.gz
4.解压后从进入Jetson_Boot_USB文件夹,然后
cd Jetson_Boot_USB/
ls
5.运行一下命令烧录EMMC引导文件。
sudo ./flash.sh -r jetson-nano-devkit-emmc mmcblk0p1
6.最后等待文件烧录进入EMMC上,成功会提示The target t210ref has been flashed successfully. Reset the board to boot from internal eMMC.
如果出现错误信息,请确认Jetson Nano是否正常连接,并且进入刷机模式,重新按照第一步进行连接。
烧录完成后,请拔掉Jetson Nnao的跳线帽,再插入U盘,重新上电开机。
最后烧录U盘镜像
U盘里的系统需要使用Win32DiskImager来烧录系统。
1.准备安装
烧录U盘系统的方式的与烧录TF卡系统的流程是一样的,准备一台win10系统电脑和一个U盘(建议32G或者更大),本次烧录U盘的步骤不需要Jetson Nano参与。
2.下载镜像(建议使用配置好环境的系统)
由于U盘里的系统需要修改配置信息,请使用yahboom提供的U盘系统镜像。新手不要使用NVIDIA官方镜像,可能由于配置问题导致无法开机。
yahboom配置的系统默认用户名:jetson,密码:yahboom
3.格式化SD卡
使用SDFormatter格式化U盘,这里注意一定不能选错Drive,否则会引起不必要的麻烦。如果U盘里已经有烧录过系统的,可能第一次格式化会出错,再执行一次就行。
4.解压下载的系统压缩文件,得到img镜像文件
5.将U盘插入电脑USB口
6. 解压并运行Win32DiskImager工具
7.在软件中选择img(镜像)文件,“Device”下选择U盘的盘符,然后选择“Write” 然后就开始烧录系统了,根据你的U盘速度,烧录过程有快有慢。
8.烧录结束后会弹出完成对话框,说明安装就完成了,如果不成功,请关闭防火墙一类的软件,重新插入U盘进行烧录。请注意安装完,windows系统下看到U盘分成多个分区并且无法点击进入,这是正常现象,因为linux下的磁盘分区win下是看不到的!
至此,Jetson Nano就烧写成功。烧录成功后系统可能会因为无法识别分区而提示格式化分区,此时不要格式化!不要格式化!不要格式化!点击取消,然后弹出U盘,最后将U盘插入到Jetson Nano主板的USB口上。
sd卡版本烧录方法:
准备工作:一台PC,一个Micro SD读卡器,需要烧录的镜像位置在Jetbotmini配套的教程->出厂镜像下,yahboom官方出厂镜像是已经配置好环境的镜像无需再配置麻烦的环境就可立即上手使用,nvidia官方出厂镜像是没有配置好环境的纯净镜像,用户需要自己试着搭建环境的话我们供给两种镜像给用户选择。
1. 根据上文提供的地址下载Jetson Nano Developer Kit SD卡图像,并记下它在计算机上的保存位置。
2.根据您使用的计算机类型,按照以下说明将图像写入microSD卡:Windows,Mac或Linux。
Windows说明:
使用SD CardFo格式化microSD卡。
1. 下载,安装和启动适用于Windows的SD存储卡格式化程序。
2. 选择卡驱动器
3. 选择“快速格式”
4. 将“卷标”留空
5. 单击“格式”开始格式化,并在警告对话框中单击“是”
使用Etcher将Jetson Nano Developer Kit SD卡图像写入microSD卡
1. 下载,安装和启动Etcher,安装包位于Jetbotmini配套教程->附件->工具软件安装包目录下。
2. 单击“选择图像”,然后选择之前下载的解压后的镜像文件(后缀为img)。
Jetbotmini出厂配置是32内存卡那就选择烧录32G镜像文件。
3. 如果尚未插入microSD卡,请将其插入。如果Windows提示您使用如下对话框,请 单击“ 取消”(根据此说明):
4. 单击“选择驱动器”并选择正确的设备。
5. 点击“Flash!”如果您的microSD卡通过USB3连接,Etcher将花费大约10分钟来编写并验证图像。
6. Etcher完成后,Windows可能会让您知道它不知道如何读取SD卡。只需单击取消并删除microSD卡。
准备好microSD卡后,继续设置开发人员工具包。
MAC说明:
您可以使用Etcher等图形程序或命令行编写SD卡映像。
蚀刻器说明
1. 请勿插入microSD卡。
2. 下载,安装和启动Etcher。
3. 单击“选择图像”,然后选择之前下载的压缩图像文件。
4. 插入microSD卡。如果您的Mac显示此窗口,请单击“忽略”:
5. 如果您没有连接其他外接驱动器,Etcher将自动选择microSD卡作为目标设备。否则,请单击“选择驱动器”并选择正确的设备。
6. 点击“Flash!”您的Mac可能会在允许Etcher继续之前提示您输入用户名和密码
如果您的microSD卡通过USB3连接,Etcher将花费大约10分钟来编写和验证图像。
7. Etcher完成后,您的Mac可能会让您知道它不知道如何读取SD卡。只需单击弹出并删除microSD卡。
命令行说明
1. 请勿插入microSD卡。等待将帮助您按以下步骤发现正确的磁盘设备名称。
2. 打开终端应用:
3. 使用此命令列出已连接到Mac的所有外部磁盘设备:
diskutil list external | fgrep '/dev/disk'
例如,如果您已将Mac驱动器连接到Mac,则结果将类似于:
4. 插入microSD卡。如果您的Mac显示此窗口,请单击“忽略”:
5. 使用与以前相同的命令列出外部磁盘设备。新列出的磁盘设备是microSD卡(本例中为/ dev / disk2):
6. 使用此命令从microSD卡中删除任何现有分区,确保MacOS允许您写入。非常小心指定正确的磁盘设备。 例如:
xxxxxxxxxx
sudo diskutil partitionDisk /dev/disk<n> 1 GPT "Free Space" "%noformat%" 100%
7. 使用此命令将压缩的SD卡图像写入microSD卡。注意使用/ dev / rdisk而不是/ dev / disk: 例如:
xxxxxxxxxx
/usr/bin/unzip -p ~/Downloads/jetson_nano_devkit_sd_card.zip | sudo /bin/dd of=/dev/rdisk<n> bs
8. 没有进展的迹象(除非你用CTRL-t发出信号)。当dd命令完成时,Mac会让你知道它无法读取microSD卡。只需单击弹出:
准备好microSD卡后,继续设置开发人员工具包。
LINUX说明:
您可以使用Etcher等图形程序或命令行编写SD卡映像。
1. 下载,安装和启动Etcher。
2. 单击“选择图像”,然后选择之前下载的压缩图像文件。 3. 插入microSD卡。如果您没有连接其他外接驱动器,Etcher将自动选择microSD卡作为目标设备。否则,请单击“更改”并选择正确的设备。
4. 单击“Flash!”您的操作系统可能会提示您输入用户名和密码,然后才能继续执行Etcher。
如果您的microSD卡通过USB3连接,Etcher需要10-15分钟才能写入并验证图像。
5. Etcher完成后,使用“文件”应用程序弹出SD卡:
从计算机上物理删除microSD卡。
命令行说明
1. 按Ctrl+ Alt + t打开终端应用程序。
2. 插入microSD卡,然后使用这样的命令显示分配给它的磁盘设备:
xxxxxxxxxx
dmesg | tail | awk '$3 == "sd" {print}'
在这个例子中,我们可以看到16GB的microSD卡分配了/ dev / sda:
1. 使用此命令将压缩的SD卡图像写入microSD卡:
xxxxxxxxxx
/usr/bin/unzip -p ~/Downloads/jetson_nano_devkit_sd_card.zip | sudo /bin/dd of=/dev/sd<x> bs=1M status=progress
例如:
dd命令完成后,从命令行弹出磁盘设备:
xxxxxxxxxx
sudo eject /dev/sd<x>
2. 从计算机上物理删除microSD卡。
准备好microSD卡后,继续安装开发人员套件。
镜像烧写好后首要任务是要让小车连接上wifi,便于今后采取远程方式来编程控制小车。最方便的办法还是通过HDMI方式连接外接显示器、鼠标和键盘来操作,就像操作手机连wifi一样方便。
注意:若是烧写的亚博jetbotmini出厂镜像,这部分配置可以选择跳过,因为里面涉及所需要的软件在亚博jetbotmini出厂镜像里都已经配置过了。
0.安装前需要更新系统
一般来说,安装完系统后应当更新源,但是由于Jetson Nano采用的是aarch64架构的Ubuntu 18.04.2 LTS系统,与AMD架构的Ubuntu系统不同,而我没有找到完美的国内源,所以不推荐大家换源。
这里并没有换源,还是使用Jetson Nano的默认源进行更新。更新过程很漫长,大家可以执行完命令,做其他事吧。以下两个操作建议一定在做AI的项目前执行,否则安装一些库会找不到安装地址,导致后面频繁出错。
注意:执行下面前需要连上wifi或者接上网线。
sudo apt-get update
sudo apt-get full-upgrade
sudo apt-get install nano 安装nano编辑器
1.首先安装pip
因为Jetson Nano中已经安装了Python3.6版本,所以安装pip还是比较简单的
xxxxxxxxxx
sudo apt-get install python3-pip python3-dev
安装后pip是9.0.1版本,需要把它升级到最新版,升级后pip版本为20.2.4。这里面升级后会有一个小Bug,需要手动改一下
xxxxxxxxxx
python3 -m pip install --upgrade pip #升级pip
xxxxxxxxxx
sudo nano /usr/bin/pip3 #打开pip3文件。
将原来的
xxxxxxxxxx
from pip import main
if __name__ == '__main__':
sys.exit(main())
改成
xxxxxxxxxx
from pip import __main__
if __name__ == '__main__':
sys.exit(__main__._main())
修改结束后保存。运行pip3 -V成功后显示
2.安装Jetbotmini依赖包
下面是Jetbotmini正常运行是需要安装的包:
依赖包 | 版本 |
---|---|
Adafruit-GPIO(本地安装) | 1.0.4 |
Adafruit-MotorHAT(本地安装) | 1.4.0 |
Adafruit-PureIO | 0.2.3 |
Adafruit-SSD1306 | 1.6.2 |
Flask | 1.1.2 |
Jetson.GPIO | 1.0.0 |
numpy | 1.16.4 |
traitlets(本地安装) | 3.4 |
pillow | 5.2.0 |
本地安装:
如果使用命令在源中搜索不到该包或者网络环境不佳的情况下,yahboom官方提供的Jetbotmini资料附件包中提供本地安装包,通过WinSCP将本地包传输至Jetbotmini文件系统中然后使用 cd xxxx跳转至需要安装的包的目录(有setup.py文件)下,使用命令
xxxxxxxxxx
sudo python3 setup.py install
对该包进行安装。
在线安装:
使用一下命令对相应的 包进行安装,package为所需要安装的包名
xxxxxxxxxx
sudo pip3 install package
即相对应的:
xxxxxxxxxx
sudo pip3 install
如果发生安装的新版本出现兼容性问题可以使用使用一下命令安装上述列出版本包中指定版本的依赖包
xxxxxxxxxx
sudo pip3 install package==version0
(例如需要指定安装numpy 1.16.4 即输入pip install numpy==1.16.4)
安装 cmake软件:
xxxxxxxxxx
sudo apt-get install cmake